package IT.DataAccess;

import IT.Entities.PlantillaProyecto;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import java.util.logging.Level;
import java.util.logging.Logger;

public class DatPlantillaProyecto implements IDatPlantillaProyecto{
    
    private PlantillaProyecto oProyecto;
    private List<PlantillaProyecto> oLista;
    private BDConexion oBase;
    
    private Connection oConexion;
    private CallableStatement oCst;    
    private ResultSet oRst;    
    
    public List<PlantillaProyecto> Listar(int nEstado) {
        oLista=new ArrayList<PlantillaProyecto>();
         
        try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_PlantillaProyectoListar(?)}");
            oCst.setInt(1, nEstado);
            oRst = oCst.executeQuery();

            while (oRst.next()) {
                oLista.add(new PlantillaProyecto(oRst.getInt("cod_plaproy_in"),
                        oRst.getString("nom_plaproy_vc"), oRst.getString("des_playpro_vc"), 
                        oRst.getDate("fec_crea_plaproy_dt"), oRst.getString("fec_crea_plaproy_vc"), 
                        oRst.getInt("est_plaproy_in"), oRst.getString("Estado"),
                        oRst.getInt("cod_emp_in"), oRst.getString("Empleado"),
                        oRst.getInt("Etapa")));
            }
            oRst.close();
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatArea.class.getName()).log(Level.SEVERE, null, ex);
        }
         return oLista;
    }

    public PlantillaProyecto Ind(int nCodigo) {
        oProyecto=new PlantillaProyecto();
         
        try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_PlantillaProyectoInd(?)}");
            oCst.setInt(1, nCodigo);
            oRst = oCst.executeQuery();

            while (oRst.next()) {       
                oProyecto.setCod_plaproy_in(oRst.getInt("cod_plaproy_in"));
                oProyecto.setNom_plaproy_vc(oRst.getString("nom_plaproy_vc"));
                oProyecto.setDes_playpro_vc(oRst.getString("des_playpro_vc"));
                oProyecto.setFec_crea_plaproy_dt(oRst.getDate("fec_crea_plaproy_dt"));
                oProyecto.setFec_crea_plaproy_vc(oRst.getString("fec_crea_plaproy_vc"));
                oProyecto.setEst_plaproy_in(oRst.getInt("est_plaproy_in"));
                oProyecto.setEstado(oRst.getString("Estado"));
                oProyecto.setCod_emp_in(oRst.getInt("cod_emp_in"));
                oProyecto.setEmpleado(oRst.getString("Empleado"));
                oProyecto.setEtapa(oRst.getInt("Etapa"));
            }
            oRst.close();
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatArea.class.getName()).log(Level.SEVERE, null, ex);
        }
       return oProyecto;
    }
    
    public List<PlantillaProyecto> Ubi(int nEmpleado) {
        oLista=new ArrayList<PlantillaProyecto>();
         
        try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_PlantillaProyectoUbi(?)}");
            oCst.setInt(1, nEmpleado);
            oRst = oCst.executeQuery();

            while (oRst.next()) {
                oLista.add(new PlantillaProyecto(oRst.getInt("cod_plaproy_in"),
                        oRst.getString("nom_plaproy_vc"), oRst.getString("des_playpro_vc"), 
                        oRst.getDate("fec_crea_plaproy_dt"), oRst.getString("fec_crea_plaproy_vc"), 
                        oRst.getInt("est_plaproy_in"), oRst.getString("Estado"),
                        oRst.getInt("cod_emp_in"), oRst.getString("Empleado"),
                        oRst.getInt("Etapa")));
            }
            oRst.close();
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatArea.class.getName()).log(Level.SEVERE, null, ex);
        }
         return oLista;
    }

    public List<PlantillaProyecto> Titulo(int nEstado) {
       oLista=new ArrayList<PlantillaProyecto>();
         
        try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_PlantillaProyectoTitulo(?)}");
            oCst.setInt(1, nEstado);
            oRst = oCst.executeQuery();

            while (oRst.next()) {
                oProyecto=new PlantillaProyecto();
                oProyecto.setCod_plaproy_in(oRst.getInt("cod_plaproy_in"));                
                oProyecto.setNom_plaproy_vc(oRst.getString("nom_plaproy_vc"));
                oProyecto.setDes_playpro_vc(oRst.getString("des_playpro_vc"));
                oLista.add(oProyecto);
            }
            oRst.close();
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatArea.class.getName()).log(Level.SEVERE, null, ex);
        }
         return oLista;
    }
    
    public void Insertar(PlantillaProyecto ent) {             
       try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_PlantillaProyectoInsertar(?,?,?, ?)}");
            oCst.setString(1, ent.getNom_plaproy_vc());
            oCst.setString(2, ent.getDes_playpro_vc());
            oCst.setInt(3, ent.getEst_plaproy_in());
            oCst.setInt(4, ent.getCod_emp_in());            
            oCst.execute();
            
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatArea.class.getName()).log(Level.SEVERE, null, ex);
        }
      
    }

    public void Editar(PlantillaProyecto ent) {
           try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_PlantillaProyectoEditar(?,?,?, ?,?)}");
            oCst.setInt(1, ent.getCod_plaproy_in());
            oCst.setString(2, ent.getNom_plaproy_vc());
            oCst.setString(3, ent.getDes_playpro_vc());
            oCst.setInt(4, ent.getEst_plaproy_in());
            oCst.setInt(5, ent.getCod_emp_in());            
            oCst.execute();
            
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatArea.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public int Eliminar(int nCodigo) {
        int nResultado=0;
        
        try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_PlantillaProyectoEliminar(?,?)}");
            oCst.setInt(1, nCodigo);              
            oCst.registerOutParameter(2, java.sql.Types.INTEGER);
            oCst.execute();
            nResultado=oCst.getInt(2);
            
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatArea.class.getName()).log(Level.SEVERE, null, ex);
        }
        return nResultado;
    }

  

}
